const app = new Vue({
  el: "#app",
  data: {
    // ↓ 鸡汤列表
    greetingList: [
      "每个人都在忙，要么忙着活，要么忙着死，只有这两种选择。——《肖申克的救赎》",
      "有一个女孩我一直迷恋着。但我觉得她是知道招募时才知道我这个人。——《饥饿游戏2》",
      "赛车和做人一样，有时候要停，有时候要冲。——《极速传说》",
      "敬仰天上的神名，热爱自己的女人，保护自己的祖国。——《特洛伊》",
      "不要相信漂亮的女人，尤其是不穿衣服的裸体女人。——《偷天陷阱》",
      "生活不是电影，生活比电影苦。——《天堂电影院》",
      "真实的东西是最不好看的。——《胭脂扣》",
      "我知道这世上有人在等我，但我不知道我在等谁，为了这个，我每天都非常快乐。——《那时花开》",
      "见过磕长头的人吗？他们的脸和手都很脏，可是心灵却很干净。——《可可西里 》",
      "人生本就是苦还是只有童年苦?生命就是如此。——《这个杀手不太冷》",
      "“你知道，有些人一辈子只能遇到一个。”——《致我们终将逝去的青春》",
      "我算过命!算命的说我是一将功成万骨枯,可是我不同意,我认为出来混的,是生是死应该由自己决定!——《无间道 》",
      "如果这个世界对你不理不睬，你也可以这样对待它。——《狮子王》",
      "当你年轻时，以为什么都有答案，可是老了的时候，你可能又觉得其实人生并没有所谓的答案。——《堕落天使》",
      "你知道我最讨厌你们美国人那里吗?从头至尾都讨厌!——《虎胆龙威5》",
      "我们身边最好的东西拿走，以提醒我们得到的太多! ——《四根羽毛》",
      "但是我有一个小理想，就是可以找到一个如意郎君，跟他一起组一个家庭生一个小宝贝，然后简简单单的过生活，那个人就是你……——《西游降魔篇》",
      "成功的含义不在于得到什么，而是在于你从那个奋斗的起点走了多远。——《心灵捕手》",
      "星星在哪里都是很亮的，就看你有没有抬头去看他们。——《玻璃樽 》",
    ],
    // ↓ 节假日列表
    holidayList: [],
    weather: {
      today: {},
      future: [],
    },
    // ↓ 当前时间
    currentTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
    // ↓ 上班时间
    startTime: 15,
    // ↓ 下班时间
    endTime: undefined,
    // ↓ 午饭时间
    dinnerTime: 35,
    weatherImg: {
      多云: "../images/weather/5.png",
      小雨: "../images/weather/8.png",
      阴: "../images/weather/3.png",
      晴: "../images/weather/1.png",
    },
  },
  computed: {
    // ↓ 随机一条鸡汤文
    aGreet() {
      const GREETING_LIST = this.greetingList;
      const index = parseInt(Math.random() * GREETING_LIST.length);
      return GREETING_LIST[index];
    },
    // ↓ 获取下次放假日期
    nextHoliday() {
      const HOLIDAY_LIST = this.holidayList;
      if (HOLIDAY_LIST.length) {
        return HOLIDAY_LIST?.[0]?.downTime;
      } else {
        return 0;
      }
    },
  },
  methods: {
    // ↓ 拉取本地的时间并定时更新
    getLocalDate() {
      setInterval(() => {
        this.currentTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
      }, 1000);
    },
    // ↓ 请求节假日列表
    getHoliday() {
      axios
        .get("http://api.jlin.top/api/holiday")
        .then((response) => {
          const { data: list } = response?.data;
          const HOLIDAY_LIST = list || [];
          this.holidayList = HOLIDAY_LIST.map((item) => {
            let downTime = dayjs(item.holidayStartTime).diff(dayjs(), "day");
            item.downTime = downTime;
            item.type = downTime > 0;
            return item;
          }).filter((item) => {
            return item.type;
          });
        })
        .catch(function (error) {
          console.log(error);
        });
    },
    // ↓ 请求天气列表
    getWeather() {
      axios
        .get("http://api.jlin.top/api/getWeather")
        .then((response) => {
          let today = response?.data.data;
          let future = response?.data.data.forecast;
          delete today.forecast;
          today = Object.assign(today, future[0]);
          future.splice(0, 1);
          this.weather = {
            today: today,
            future: future,
          };
        })
        .catch(function (error) {
          console.log(error);
        });
    },
    // ↓ 计算下班时间
    computeEndTime() {
      const VALUE = this.startTime - 60;
      this.endTime = dayjs("2022-01-01 18:15").add(VALUE, "m").format("HH:mm");
      // ↓ 存到本地
      if(chrome.storage){
      chrome.storage &&
        chrome.storage.local.set(
          {
            startTime: this.startTime
          },
          function () {
            console.log('保存成功！')
          }
        )
      } else localStorage && localStorage.setItem('startTime',this.startTime)
    },
    // ↓ 修改当月吃饭时间
    changeDinnerTime() {
      // ↓ 存到本地
      if(chrome.storage){
        chrome.storage.local.set(
          {
            dinnerTime: this.dinnerTime
          },
          function () {
            console.log('保存成功！')
          }
        )
      } else localStorage && localStorage.setItem('dinnerTime',this.dinnerTime)
    },
    // 从本地拉取数据
    getLocal() {
      if(chrome.storage){
        chrome.storage.local.get(['startTime', 'dinnerTime'], function (result) {
          app.startTime = result.startTime || 15
          app.dinnerTime = result.dinnerTime || 35
        })
      } else {
        const startTime = localStorage && localStorage.getItem('startTime')
        const dinnerTime = localStorage && localStorage.getItem('dinnerTime')
        this.startTime = parseInt(startTime || 15)
        this.dinnerTime = parseInt(dinnerTime || 35)
      }
    },
    // ↓ 发送消息
    sendMessage(){
      // ↓ 随机一条数据
      const INDEX = parseInt(Math.random() * this.greetingList.length)
      // ↓ 获取当前小时
      const HOUR = new Date().getHours()
      // ↓ 获取当前分钟
      const MINUTE = new Date().getMinutes()
      let message = ''
      // ↓ 午餐提醒和下班提醒
      if (this.dinnerTime === 35 && HOUR === 11 && [33, 34, 35].includes(MINUTE))
        message = "放下手头的工作，准备恰午饭啦！";
      else if (
        this.dinnerTime === 55 &&
        HOUR === 11 &&
        [53, 54, 55].includes(MINUTE)
      )
        message = "放下手头的工作，准备恰午饭啦！";
      else if (HOUR === 17 && [28, 29, 30].includes(MINUTE))
        message = "要下班啦，快快保存代码并提交备份哦！";
      else if ([1, 15, 30, 45].includes(MINUTE)) message = this.greetingList[INDEX];
      if (message) {
        alert(message)
      }
    }
  },
  mounted() {
    this.getLocalDate();
    this.getHoliday();
    this.getWeather();
    this.getLocal();
    this.computeEndTime();
    if(!chrome.storage){
      this.sendMessage()
      setInterval(() => {
        this.sendMessage()
      }, 60 * 1000)
    }
  },
});
